配置动态路由(导航守卫) 您所在的位置:网站首页 vue 路由守卫routerbeforeeach 配置动态路由(导航守卫)

配置动态路由(导航守卫)

2023-05-05 03:13| 来源: 网络整理| 查看: 265

配合自动更新页面标签title方法

自动更新页面标签title - 掘金 (juejin.cn)

在src文件夹下创建permission.js文件 在main.js文件内引入并立即使用 import '@/permission' 复制代码 permission.js文件内部 import router from './router' import store from './store' // 弹框组件 import { Message } from 'element-ui' // 自动更新页面标签title方法,在utils中 import getPageTitle from '@/utils/get-page-title' // 进度条,在axios中配置了这里可以不用配置 import NProgress from 'nprogress' // progress bar import 'nprogress/nprogress.css' // progress bar style // 禁用进度环 NProgress.configure({ showSpinner: false }) // NProgress Configuration // 白名单:不需要登录校验的路由 const whiteList = ['/login', '/404'] // no redirect whitelist // 导航守卫 router.beforeEach(async (to, from, next) => { // 开启进度条 NProgress.start() // 自动更新页面标签title,title名使用前往的路由配置中meta里的title属性 document.title = getPageTitle(to.meta.title) // 从仓库中获取token 用于判断有无token const hasToken = store.dispatch('user/getToken') // 有token if (hasToken) { //如果登录了后还想访问登录页 if (to.path === '/login') { // 那就前往首页 next({ path: '/' }) // 结束进度条 NProgress.done() } //如果登录了后访问其他页 else { //从仓库中获取用户信息 const hasGetUserInfo = store.getters.name // 如果有用户信息 if (hasGetUserInfo) { // 正常跳转 next() } // 如果没有用户信息 else { // 获取用户信息成功 try { // 调仓库中接口获取用户信息 await store.dispatch('user/getInfo') // 跳转 // next() next({ ...to }) } // 获取用户信息失败(token过期) catch (error) { // 调仓库中接口清除token await store.dispatch('user/resetToken') // 弹出提示框提示 Message.error(error || 'Has Error') // 跳到login页 next(`/login?redirect=${to.path}`) // 进度条取消 NProgress.done() } } } } // 没token else { // 判断访问的路径是否在白名单中,如果在 if (whiteList.indexOf(to.path) !== -1) { // 跳转对应页面 next() } // 如果不在 else { // 跳转到登录页,或者可以跳转到403页告知没有权限 next(`/login?redirect=${to.path}`) // 结束进度条 NProgress.done() } } }) 复制代码


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有